Embodiments in accordance with the present invention generally relate to the field of integrated circuit chips. More specifically, embodiments of the present invention pertain to systems and methods for dynamically reconfiguring a programmable system on a chip.
The semiconductor industry has developed a wide range of integrated circuits that may be configured, e.g., customized, by system designers, as opposed to integrated circuit designers, to perform a wide variety of tasks that previously would have required a customized integrated circuit design. Such integrated circuits include field programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), field programmable analog arrays (FPAAs) and the like.
One exemplary family of configurable integrated circuits is the PSoC® programmable system on a chip integrated circuit family, commercially available from Cypress Semiconductor of San Jose, Calif. One set of products, PSoC® mixed-signal arrays, are programmable systems on-chips (SOCs) that integrate a microcontroller and the analog and digital components that typically surround it in an embedded system. A single PSoC® device can integrate as many as 100 peripheral functions with a microcontroller, saving customers design time, board space, power consumption, and bill of materials cost.
PSoC® mixed-signal arrays are well suited to capacitive sensing applications. Capacitive sensing generally includes capacitive sensors for buttons (switches), linear and radial sliders, touchpads, touchscreens and the like. User interaction with such sensors, e.g., touching, is detected by changes in capacitance among such sensors. For example, rather than detecting a make or break of electrical contacts, capacitive sensing detects changes in capacitance to determine button activation.
Unfortunately, the physical design of such sensors, as well as capacitive interaction of such sensors with other physical elements of a target device requires a great amount of tuning, debugging and parametric optimization of devices in the target application in order to achieve satisfactory function.
Under the conventional art, these processes may at times be cumbersome and error prone. For example, optimization of capacitance sensing applications generally requires monitoring raw capacitive sensing data (“counts”), baseline and other data in real time. Such optimization in the target hardware is required to set a variety of processing parameters according to the sensors geometrical dimensions, overlay thickness and dielectric properties. Additionally, this data should be monitored to check performance margins, test system operation under temperature, humidity and various noise sources influence.
Unfortunately, conventional art tools are not generally optimized for capacitance sensing applications, and the data is represented in a non-intuitive manner. For example, a conventional art charting tool may present button activation capacitive data in a non-intuitive graphical format. In addition, most such tools require a user to manually enter command strings in order to obtain such data. Such tools do not relate well to capacitance sensing applications, and may be cumbersome and error prone.
In addition, real time monitoring and/or control of operating components can be challenging. Traditional monitoring and/or control of integrated circuits typically involves complex interactions with complicated command structures and syntaxes that are not readily comprehendible or user friendly. Recognizing alterations in convoluted expressions of operating states, evaluating implications of the alterations and/or reacting to the evaluation appropriately using elaborate command and data input mechanisms with sufficient speed to be useful in real time real time is particularly difficult.
In addition, implementing changes to operating parameters generally requires a time consuming and error prone processes of changing some parameters in a source design file, compiling the source file into configuration data, loading the configuration data into the target hardware, and observing the results of the changed parameters. Changing even a few such parameters can require numerous undesirable iterations of this process.